function createFeedbackModel(data) {
	var feedback = data.getElementsByTagName("feedback");
	var arrFeedback = [];
	var feedbackId, email, title, content, isReaded, createTime;
	for (var i = 0; i < feedback.length; i++) {
		feedbackId = feedback[i].getElementsByTagName("feedbackId")[0].childNodes[0].nodeValue;
		email = feedback[i].getElementsByTagName("email")[0].childNodes[0].nodeValue;
		title = feedback[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
		content = feedback[i].getElementsByTagName("contents")[0].childNodes[0].nodeValue;
		isReaded = feedback[i].getElementsByTagName("isReaded")[0].childNodes[0].nodeValue;
		createTime = feedback[i].getElementsByTagName("createTime")[0].childNodes[0].nodeValue;

		arrFeedback[i] = {
			"feedbackId" : feedbackId,
			"email" : email,
			"title" : title,
			"content" : content,
			"isReaded" : isReaded,
			"createTime" : createTime,
		}
	}

	return new Feedback(arrFeedback);
}

var Feedback = function(feedbacks) {
	this.feedbacks = feedbacks;
}
function showManageFeedbackPage(data) {
	var key = "feedback";
	addActive(key);
	var root = document.getElementById("loadFeedBack");
	root.innerHTML = "";
	if (data.length > 0) {
		var nodeTable = createTable();
		nodeTable.setAttribute("id", "tableFeedBack");

		var nodeThId = createNode("th");
		var idTh = createTextNode("Mã");
		nodeThId.appendChild(idTh);
		var nodeThTitle = createNode("th");
		var titleTh = createTextNode("Tiêu đề");
		nodeThTitle.appendChild(titleTh);
		var nodeThAcc = createNode("th");
		var accTh = createTextNode("Người gửi");
		nodeThAcc.appendChild(accTh);
		var nodeThDate = createNode("th");
		var dateTh = createTextNode("Ngày gửi");
		nodeThDate.appendChild(dateTh);
		var nodeThDetails = createNode("th");
		var nodeThDelete = createNode("th");

		nodeTable.appendChild(nodeThId);
		nodeTable.appendChild(nodeThTitle);
		nodeTable.appendChild(nodeThAcc);
		nodeTable.appendChild(nodeThDate);
		nodeTable.appendChild(nodeThDetails);
		nodeTable.appendChild(nodeThDelete);

		var nodeId = null;
		var nodeTitle = null;
		var nodeAcc = null;
		var nodeDate = null;

		var nodeDelete = null;
		var nodeTdDelete = null;
		var nodeDivDelete = null;

		for (var i = 0, j = data.length; i < j; i++) {
			var feedback = data[i];
			var row = document.createElement("tr");
			if (feedback.isReaded == "false") {
				row.className = "unread";
			}

			row.setAttribute("id", "feedbackIdInRow" + feedback.feedbackId);
			//cho từng column
			// <tr class="unread">
			// <td><a href="">1</a></td>
			// <td>Lam an nhu *beep*</td>
			// <td>Deptraikosoai</td>
			// <td>06/30/13</td>
			// <td><a href="">Chi tiết</a></td>
			// <td><a href="">Delete</a></td>
			// </tr>

			//column feedback id
			nodeId = document.createElement("td");
			var id = document.createTextNode(feedback.feedbackId);
			nodeId.appendChild(id);
			row.appendChild(nodeId);

			//cột tieu de

			nodeTitle = document.createElement("td");
			var title = document.createTextNode(feedback.title);
			nodeTitle.appendChild(title);
			row.appendChild(nodeTitle);

			// cột owner

			nodeAcc = document.createElement("td");
			var owner = document.createTextNode(feedback.email);
			nodeAcc.appendChild(owner);
			row.appendChild(nodeAcc);

			//cột order date

			nodeDate = document.createElement("td");
			var createTime = document.createTextNode(feedback.createTime);
			nodeDate.appendChild(createTime);
			row.appendChild(nodeDate);

			//cột detail
			var columnDetail = document.createElement("td");
			var divDetail = createDiv();
			divDetail.addClass("detailFeedback");
			var detail = document.createElement("span");
			detail.setText("Chi tiết");
			detail.style.cursor = "pointer";
			detail.style.color = "blue";
			divDetail.appendChild(detail);
			columnDetail.addEventListener("click", function() {
				var row = $id(event.currentTarget.parentNode.id);
				var cels = row.getElementsByTagName("td");
				var id = cels[0].innerText;
				getFeedbackDetails(id);
			});
			columnDetail.appendChild(divDetail);
			row.appendChild(columnDetail);

			//cot delete
			nodeTdDelete = createNode("td");
			nodeDivDelete = createDiv();
			nodeDelete = createNode("img");
			nodeDelete.setAttribute("src", "Image/delete_icon.png");
			nodeDelete.style.cursor = "pointer";
			nodeTdDelete.addEventListener("click", function() {
				var row = $id(event.currentTarget.parentNode.id);
				var cels = row.getElementsByTagName("td");
				var feedbackId = cels[0].innerText;
				var r = confirm("Bạn có muốn xóa góp ý có mã là " + feedbackId + " ?");
				if (r == true) {
					deleteFeedback(feedbackId);
				}
			});
			nodeDivDelete.appendChild(nodeDelete);
			nodeTdDelete.appendChild(nodeDivDelete);
			row.appendChild(nodeTdDelete);

			nodeTable.appendChild(row);

		};
		root.appendChild(nodeTable);
		var divPaging = createDiv();
		divPaging.setAttribute("id", "pageFeedback");
		divPaging.setAttribute("class", "paging");
		var script = createNode("script");
		script.setAttribute("type", "text/javascript");
		script.innerHTML = "var pager = new Pager('tableFeedBack', 10); pager.init(); pager.showPageNav('pager', 'pageFeedback'); pager.showPage(1);";
		root.appendChild(divPaging);
		root.appendChild(script);
	}
}

function callFeedbackService() {
	ajax.get({
		url : "http://localhost:8080/book-service/staff/manageFeedback",
		success : function(data, xhr) {
			showPage("content-manageFeedback");
			var model = createFeedbackModel(data);
			if (model.feedbacks.length <= 0) {
				alert("Không có kết quả!");
			}
			showManageFeedbackPage(model.feedbacks);

		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function searchFeedback() {
	var email = document.getElementById("txtSearchFeedback").value;
	ajax.get({
		url : "http://localhost:8080/book-service/staff/manageFeedback/searchFeedback",
		param : {
			"txtFeedbackEmail" : email
		},
		success : function(data, xhr) {
			var model = createFeedbackModel(data);
			if (model.feedbacks.length <= 0) {
				alert("Không có kết quả!");
			}
			showManageFeedbackPage(model.feedbacks);
		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function filterReaded() {
	ajax.get({
		url : "http://localhost:8080/book-service/staff/manageFeedback/filterReaded",
		success : function(data, xhr) {
			var model = createFeedbackModel(data);
			if (model.feedbacks.length <= 0) {
				alert("Không có kết quả!");
			}
			showManageFeedbackPage(model.feedbacks);
		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function filterUnReaded() {
	ajax.get({
		url : "http://localhost:8080/book-service/staff/manageFeedback/filterUnReaded",
		success : function(data, xhr) {
			var model = createFeedbackModel(data);
			if (model.feedbacks.length <= 0) {
				alert("Không có kết quả!");
			}
			showManageFeedbackPage(model.feedbacks);
		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function deleteFeedback(id) {
	ajax.del({
		url : "http://localhost:8080/book-service/staff/manageFeedback",
		param : {
			"txtFeedbackId" : id
		},
		success : function() {
			alert("Xóa góp ý có mã là " + id + " thành công");
			showPage("content-manageFeedback");
			callFeedbackService();
		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function getFeedbackDetails(id) {

	ajax.get({
		url : "http://localhost:8080/book-service/staff/manageFeedback/detailFeedback",
		param : {
			"txtFeedbackId" : id
		},
		success : function(data, xhr) {
			var arrFeedback = [];
			feedbackId = data.getElementsByTagName("feedbackId")[0].childNodes[0].nodeValue;
			email = data.getElementsByTagName("email")[0].childNodes[0].nodeValue;
			title = data.getElementsByTagName("title")[0].childNodes[0].nodeValue;
			content = data.getElementsByTagName("contents")[0].childNodes[0].nodeValue;
			isReaded = data.getElementsByTagName("isReaded")[0].childNodes[0].nodeValue;
			createTime = data.getElementsByTagName("createTime")[0].childNodes[0].nodeValue;
			if (isReaded == "false") {
				updateFeedback(feedbackId);
			}
			arrFeedback = {
				"feedbackId" : feedbackId,
				"email" : email,
				"title" : title,
				"content" : content,
				"isReaded" : isReaded,
				"createTime" : createTime,
			}

			var model = new Feedback(arrFeedback);
			showPage("content-detailFeedback");
			createDetailFeedbackView(model.feedbacks);
		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}

function updateFeedback(id) {
	ajax.put({
		url : "http://localhost:8080/book-service/staff/manageFeedback",
		param : {
			"txtUpdateFeedback" : id
		},
		success : function() {

		},
		failure : function(xhr) {
			if (xhr.status == 401) {
				alert("Bạn không có quyền truy cập vào trang này!\n Xin mời đăng nhập lại");
				doRequestFail();
			} else {
				alert("Có lỗi xảy ra. Xin thử lại!");
			}
		},
		abort : function(xhr) {
			callback.abort(xhr);
		}
	});
}
